/**
 * Project Name:fastPlat
 * File Name:PermissionService.java
 * Package Name:com.fast.user.service.admin
 * Date:2014年12月17日上午11:14:02
 * Copyright (c) 2014, lsflu@126.com All Rights Reserved.
 *
*/

package com.fast.user.service.admin;

import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.fast.base.dao.JpaDao;
import com.fast.base.dao.JdbcDao;
import com.fast.user.model.admin.Permission;
import com.fast.user.model.admin.dto.MenuDTO;

/**
 * ClassName:PermissionService <br/>
 * 用途:权限服务 <br/>
 * 开发人员：lushuifa  http://lushuifa.iteye.com/
 * 邮箱:lsflu@126.com
 * @version  
 * @since    JDK 1.6
 * @see
 * Date:     2014年12月17日 上午11:14:02 <br/> 	 
 */
public interface PermissionService extends JpaDao,JdbcDao {
	
	/**
	 * 获取权限内容
	 * @param groupUUID
	 * @return
	 */
	String getPermissionArray(String groupUUID);
	
	/**
	 * 获取系统菜单
	 * @param adminUUID 
	 * @param groupId 
	 * @return 菜单列表
	 */
	List<MenuDTO> getSystemLeftMenu(int groupId);
	
    
	/**
	 * 标题：getTreeGridData <br/>
	 * 作用：得到权限树结构数据     <br/>
	 * @author developer-lushuifa
	 * @param parentUUID
	 * @return
	 * @since JDK 1.6
	 */
	JSONArray getTreeGridData(String parentUUID);
    
	/**
	 * 标题：getTreeGridData <br/>
	 * 作用：得到树导航数据     <br/>
	 * @author developer-lushuifa
	 * @param parentUUID
	 * @param permissionArray 
	 * @param userUUID 
	 * @return
	 * @since JDK 1.6
	 */
	JSONArray getPsmTreeData(String parentUUID,String permissionArray, String cacheKey);

	/**
	 * 标题：genPsmCode <br/>
	 * 作用：   生成权限编码  <br/>
	 * @author developer-lushuifa
	 * @param permission
	 * @return
	 * @since JDK 1.6
	 */
	String genPsmCode(Permission permission);

	/**
	 * 标题：genPsmGrade <br/>
	 * 作用：获取当前对象就有的级别     <br/>
	 * @author developer-lushuifa
	 * @param permission
	 * @return
	 * @since JDK 1.6
	 */
	int genPsmGrade(Permission permission);

	/**
	 * 标题：genOrderNo <br/>
	 * 作用：  获取排序字段值   <br/>
	 * @author developer-lushuifa
	 * @param permission
	 * @return
	 * @since JDK 1.6
	 */
	int genOrderNo(Permission permission);


	/**
	 * 保存权限信息
	 * @param permission
	 * @return
	 */
	boolean saveOrUpdatePermission(Permission permission);


	/**
	 * 说明: 获取权限相关信息 <br>
	 * 编写者:lushuifa
	 * 创建时间:2017年4月22日 上午10:02:24 </pre>
	 * @param 
	 * @return JSONArray 说明
	 */
	JSONArray getTreeForJsonArray(String parentUUID, String pmsArr, int depth);


	/**
	 * 说明: 获取权限信息，主要用于下拉框树<br>
	 * 编写者:lushuifa
	 * 创建时间:2017年5月16日 下午11:47:51 </pre>
	 * @param 
	 * @return JSONArray 说明
	 */
	JSONArray getPermissionTreeData(String parentUUID, boolean isRoot);


	/**
	 * 拷贝权限
	 * @param toPermissitonId
	 * @param uuidArray
	 * @return
	 */
	boolean copyPermission(String toPermissitonId, String uuidArray);


	/**
	 * 说明: 顺序调整 <br>
	 * 编写者:lushuifa
	 * 创建时间:2017年10月12日 下午10:55:09 </pre>
	 * @param 
	 */
	boolean setOrderVal(String setType, int id);
}

